package hashset;
/**
 * @Time 2019/12/7
 * @author 王光浩
 * @Method 需求:创建一个hash集合，用于存储在0~1000000之间的数据，不允许使用内部的hashset库
 *                   思路：设计一个hashset，首先我们需要设计一个hash函数。然后我们还需了解在hashset中不允许插入重复的值。
 *                              设计的hash函数为:y=x%1000001;可以设计一个类型为boolean大小为1000001的数组，用于判断对应的x是否存入。
 *                              缺点：使用的内存过大。
 *                   步骤：
 *           (1)初始化阶段为数组分配一个1000001大小
 *           (2)add方法：使用hash函数求出对应的y值（其实就是x值）然后将对应位置数组的值设置为ture。
 *           (3)remove方法：首先使用hash函数求出对应位置的y值，然后判断在数组中该处值是否为ture，为true则将该处的值
 *                                                     设置为false，否则return。
 *           (3)contain:同remove，但是不更改值
 *          
 *           
 */
public class MyHashSet {
	private boolean[] judge;                //用于判读x是否存储
    /** 进行初始化 */
    public MyHashSet() {
        judge=new boolean[1000001];
    }
    
    /**插入数据*/
    public void add(int key) {
        if(judge[key]==true)
        	return;
        judge[key]=true;
    }
    
    /**移除数据*/
    public void remove(int key) {
        if(judge[key]==true)
        	judge[key]=false;
        return;
    }
    
    /** 判断数据是否存在 */
    public boolean contains(int key) {
        return judge[key];
    }
}
